package com.sojson.util.encrypt.bothway.imparity.sm2;

/**
 * Sms2双向非对称加解密工具类
 * 
 * @author liu
 * @date 2020-09-04
 */
public interface ISm2SignUtil {

    /**
    * 签名
    * @param data 数据
    * @return 签名
    */
    String sign(String data, String privateKey) throws Exception;

    /**
    * 签名
    * @param data 数据
    * @return 签名
    */
    byte[] signToByte(String data, String privateKey) throws Exception;

    /**
    * 签名
    * @param data 数据
    * @return 签名
    */
    String signToStr(byte[] data, String privateKey) throws Exception;

    /**
    * 签名
    * @param data 数据
    * @return 签名
    */
    byte[] sign(byte[] data, String privateKey) throws Exception;

    /**
     * 用公钥检验数字签名的合法性
     * @param data      数据
     * @param sign      签名
     * @param publicKey 公钥
     * @return 是否验证通过
     */
    boolean verify(String data, String sign, String publicKey) throws Exception;

    /**
     * 用公钥检验数字签名的合法性
     * @param data      数据
     * @param sign      签名
     * @param publicKey 公钥
     * @return 是否验证通过
     */
    boolean verify(byte[] data, byte[] sign, String publicKey) throws Exception;

}